Change to use pywe-oauth

Brightcells 8 年之前
父节点
当前提交
e440bc76ee
共有 2 个文件被更改,包括 11 次插入32 次删除
  1. 4 1
      requirements.txt
  2. 7 31
      wechat/views.py

+ 4 - 1
requirements.txt

@@ -22,9 +22,12 @@ isoweek==1.3.1
22 22
 kkconst==1.1.3
23 23
 mock==2.0.0
24 24
 pep8==1.7.0
25
+pywe-oauth==1.0.1
26
+pywe-utils==1.0.0
25 27
 records==0.4.3
26 28
 redis==2.10.5
27
-redis-extensions==1.0.22
29
+redis-extensions==1.0.23
30
+requests==2.12.1
28 31
 rlog==0.2
29 32
 shortuuid==0.4.3
30 33
 uWSGI==2.0.14

+ 7 - 31
wechat/views.py

@@ -1,20 +1,17 @@
1 1
 # -*- coding: utf-8 -*-
2 2
 
3 3
 import time
4
-import urllib
5 4
 
6
-import requests
7 5
 import shortuuid
8 6
 from django.conf import settings
9 7
 from django.shortcuts import redirect
10 8
 from furl import furl
11 9
 from json_response import auto_response
10
+from pywe_oauth import get_access_info, get_oauth_code_url, get_userinfo
12 11
 from wechatpy import WeChatClient
13 12
 
14 13
 
15
-r = settings.REDIS_CACHE
16
-WECHAT = settings.WECHAT
17
-JSAPI = WECHAT.get('JSAPI', {})
14
+JSAPI = settings.WECHAT.get('JSAPI', {})
18 15
 
19 16
 
20 17
 def wx_oauth2(request):
@@ -22,15 +19,9 @@ def wx_oauth2(request):
22 19
     redirect_url = request.GET.get('redirect_url', '')
23 20
     default_url = request.GET.get('default_url', '')
24 21
 
25
-    redirect_uri = settings.WECHAT_USERINFO_REDIRECT_URI if scope == 'snsapi_userinfo' else settings.WECHAT_BASE_REDIRECT_URI
26
-
27 22
     if request.weixin:
28
-        return redirect(settings.WECHAT_OAUTH2_AUTHORIZE.format(
29
-            appid=JSAPI['appID'],
30
-            redirect_uri=urllib.quote_plus(redirect_uri),
31
-            scope=scope,
32
-            state=urllib.quote_plus(redirect_url)
33
-        ))
23
+        redirect_uri = settings.WECHAT_USERINFO_REDIRECT_URI if scope == 'snsapi_userinfo' else settings.WECHAT_BASE_REDIRECT_URI
24
+        return redirect(get_oauth_code_url(JSAPI['appID'], redirect_uri, scope, redirect_url))
34 25
 
35 26
     return redirect(default_url or redirect_url)
36 27
 
@@ -39,11 +30,7 @@ def base_redirect(request):
39 30
     code = request.GET.get('code', '')
40 31
     state = request.GET.get('state', '')
41 32
 
42
-    access_info = requests.get(settings.WECHAT_OAUTH2_ACCESS_TOKEN.format(
43
-        appid=JSAPI['appID'],
44
-        secret=JSAPI['appsecret'],
45
-        code=code
46
-    ), verify=False).json()
33
+    access_info = get_access_info(JSAPI['appID'], JSAPI['appsecret'], code)
47 34
 
48 35
     return redirect(furl(state).add(access_info).url)
49 36
 
@@ -52,19 +39,8 @@ def userinfo_redirect(request):
52 39
     code = request.GET.get('code', '')
53 40
     state = request.GET.get('state', '')
54 41
 
55
-    access_info = requests.get(settings.WECHAT_OAUTH2_ACCESS_TOKEN.format(
56
-        appid=JSAPI['appID'],
57
-        secret=JSAPI['appsecret'],
58
-        code=code
59
-    ), verify=False).json()
60
-    openid, access_token = access_info.get('openid', ''), access_info.get('access_token', '')
61
-
62
-    res = requests.get(settings.WECHAT_OAUTH2_USERINFO.format(
63
-        access_token=access_token,
64
-        openid=openid
65
-    ), verify=False)
66
-    res.encoding = 'utf-8'
67
-    userinfo = res.json()
42
+    access_info = get_access_info(JSAPI['appID'], JSAPI['appsecret'], code)
43
+    userinfo = get_userinfo(access_info.get('access_token', ''), access_info.get('openid', ''))
68 44
 
69 45
     return redirect(furl(state).add(userinfo).url)
70 46